﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//union Un1 { char c[5]; int i; }; 
//union Un2 { short c[7]; int i; };
//int main() 
//{ 
//	//下⾯输出的结果是什么？
//	printf("%zu\n", sizeof(union Un1)); 
//	printf("%zu\n", sizeof(union Un2)); 
//	return 0;
//}
//enum Color
//{ 
//	RED=2,
//	GREEN, 
//	BLUE };
//int main()
//{
//	enum Color clr = GREEN;
//	printf("%d ", BLUE);//4
//	printf("%d ", clr);//3
//
//	return 0;
//}
//
//union
//{
//	int i;
//	char c;
//}un;
//
//int main()
//{
//	un.i = 1;
//	printf("%d ", (int)un.c);
//	return 0;
//}
//int main()
//{
//    union
//    {
//        short k;
//        char i[2];
//    }*s, a;
//    s = &a;
//    s->i[0] = 0x39;
//    s->i[1] = 0x38;
//    printf("%x\n", a.k);
//    return 0;
//}
#include <stdio.h>
#include <math.h>
int countDigits(int number) {
   
    // 如果数字为0，则位数为1
    if (number == 0) {
        return 1;
    }
    // 使用log10函数计算位数
    return (int)log10(number) + 1;
}
int main()
{
    for (int i = 0;i < 100000;i++)
    {
        int sum = 0;
        int num = countDigits(i);//求位数
        
        for (int j = 1;j <= num;j++)
        {
        int divisor = (int)pow(10, j);
        int a = i / divisor; // 分割的前部分
        int b = i % divisor; // 分割的后部分
         sum += (a * b);
        }
        if (i == sum)
        {
            printf("%d ", i);
        }
    }
    return 0;
}